// Grunt 失败任务标记

module.exports = grunt =>{

    // 任务函数执行过程如果返回 false
    // 则意味着此任务执行失败
    grunt.registerTask('bad', ()=>{
        console.log('bad working～') 
        return false
    })

    grunt.registerTask('foo',  ()=>{
        console.log('hello foo task')
    })

    grunt.registerTask('bar',  ()=>{
        console.log('hello bar task')
    })

    // 如果一个任务列表中的某个任务执行失败
    // 则后续任务默认不会运行
    // 除非 grunt 运行时指定 --force 参数强制执行
    grunt.registerTask('default', ['foo', 'bad', 'bar'])
    
    // 异步函数中标记当前任务执行失败的方式是为回调函数执行一个 false 实参
    // 由于函数体中需要使用 this， 所以不能使用箭头函数
    grunt.registerTask('async-task', function (){
        const done = this.async()
        setTimeout(()=>{
            console.log('async task working~')
            done(false) 
        }, 1000)
    })

}